import CryptoJS from "crypto-js";
import config from '@/common/config'

var accessKey = "buma_admin";
var secret = "50e7f81244089415";

var AES_BASE64_MD5 = (word) => {
    const key = CryptoJS.enc.Utf8.parse(secret);
    const srcs = CryptoJS.enc.Utf8.parse(word);
    const encrypted = CryptoJS.AES.encrypt(srcs, key, {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7,
    });
    return CryptoJS.MD5(
      CryptoJS.enc.Utf8.parse(
        encrypted.ciphertext.toString(CryptoJS.enc.Base64)
      )
    ).toString();
}

uni.$u.http.getSignUrl = (url) => {
	return config.baseUrl + `${url}?accessKey=${accessKey}&sign=${AES_BASE64_MD5(url)}`;
}

/**
 * 请求拦截
 * @param {Object} http
 */
module.exports = (vm) => {
    uni.$u.http.interceptors.request.use((config) => { // 可使用async await 做异步操作
        // 初始化请求拦截器时，会执行此方法，此时data为undefined，赋予默认{}
        config.data = config.data || {}
		config.url = `${config.url}?accessKey=${accessKey}&sign=${AES_BASE64_MD5(config.url)}`;
		config.header['session_token'] = uni.getStorageSync('token');
        // 可以在此通过vm引用vuex中的变量，具体值在vm.$store.state中
		console.log("url", config.url)
		// uni.showLoading({
		// 	title: "加载中",
		// 	mask: true
		// })
        return config
    }, (config) => // 可使用async await 做异步操作
        Promise.reject(config))
}
